package zzu.patterns.creational.abstractfactory;

import zzu.patterns.creational.abstractfactory.color.Color;
import zzu.patterns.creational.abstractfactory.shape.Shape;

/**
 * 优点：当一个产品族中的多个对象被设计成一起工作时，它能保证客户端始终只使用同一个产品族中的对象。
 *
 * 缺点：产品族扩展非常困难，要增加一个系列的某一产品，既要在抽象的 Creator 里加代码，又要在具体的里面加代码。
 *
 * 适用于产品簇，小米既生产手机又生产汽车  手机牌子是小米、redMi;汽车牌子有***；
 */
public class Client {
    public static void main(String[] args) {
        AbstractFactory color = FactoryProduce.getBean("color");
        AbstractFactory shape = FactoryProduce.getBean("shape");
        Color red = color.getColor("red");
        Color blue = color.getColor("blue");

        red.fill();
        blue.fill();

        Shape circle = shape.getShape("circle");
        Shape rectangle = shape.getShape("rectangle");

        rectangle.drill();
        circle.drill();

    }
}
